package svc

import (
	"github.com/dgrijalva/jwt-go"
	"github.com/satori/go.uuid"
)

type CustomClaims struct {
	UUID        uuid.UUID `json:"uuid"`
	ID          uint      `json:"id"`
	Username    string    `json:"username"`
	NickName    string    `json:"nickName"`
	AuthorityId string    `json:"authorityId"`
	//BufferTime  int64     `json:"bufferTime"`
	jwt.StandardClaims
}

type LoginResp struct {
	User      User   `json:"user"`
	Token     string `json:"token"`
	ExpiresAt int64  `json:"expiresAt"`
}

type SysCaptchaResp struct {
	CaptchaId string `json:"captchaId"`
	PicPath   string `json:"picPath"`
}

type SysUserResp struct {
	User User `json:"user"`
}

type PageResult struct {
	List     interface{} `json:"list"`
	Total    int64       `json:"total"`
	Page     int         `json:"page"`
	PageSize int         `json:"pageSize"`
}

// 该表应该由 casbin 自动生成
type CasbinRule struct {
	PType string `json:"pType"`
	V0    string `json:"v0"`
	V1    string `json:"v1"`
	V2    string `json:"v2"`
	V3    string `json:"v3"`
	V4    string `json:"v4"`
	V5    string `json:"v5"`
}

type Field struct {
	FieldName       string `json:"fieldName"`       // Field名
	FieldDesc       string `json:"fieldDesc"`       // 中文名
	FieldType       string `json:"fieldType"`       // Field数据类型
	FieldJson       string `json:"fieldJson"`       // FieldJson
	DataTypeLong    string `json:"dataTypeLong"`    // 数据库字段长度
	Comment         string `json:"comment"`         // 数据库字段描述
	ColumnName      string `json:"columnName"`      // 数据库字段
	FieldSearchType string `json:"fieldSearchType"` // 搜索条件
	DictType        string `json:"dictType"`        // 字典
}

type Meta struct {
	KeepAlive   bool   `json:"keepAlive" gorm:"comment:是否缓存"`           // 是否缓存
	DefaultMenu bool   `json:"defaultMenu" gorm:"comment:是否是基础路由（开发中）"` // 是否是基础路由（开发中）
	Title       string `json:"title" gorm:"comment:菜单名"`                // 菜单名
	Icon        string `json:"icon" gorm:"comment:菜单图标"`                // 菜单图标
	CloseTab    bool   `json:"closeTab" gorm:"comment:自动关闭tab"`         // 自动关闭tab
}

type CasbinModel struct {
	Ptype       string `gorm:"column:ptype"`
	AuthorityId string `gorm:"column:v0"`
	Path        string `gorm:"column:v1"`
	Method      string `gorm:"column:v2"`
}

type ExaSimpleUploader struct {
	ChunkNumber      string `json:"chunkNumber" gorm:"comment:当前切片标记"`
	CurrentChunkSize string `json:"currentChunkSize" gorm:"comment:当前切片容量"`
	CurrentChunkPath string `json:"currentChunkPath" gorm:"comment:切片本地路径"`
	TotalSize        string `json:"totalSize" gorm:"comment:总容量"`
	Identifier       string `json:"identifier" gorm:"comment:文件标识（md5）"`
	Filename         string `json:"filename" gorm:"comment:文件名"`
	TotalChunks      string `json:"totalChunks" gorm:"comment:切片总数"`
	IsDone           bool   `json:"isDone" gorm:"comment:是否上传完成"`
	FilePath         string `json:"filePath" gorm:"comment:文件本地路径"`
}
